ggsm_set_rank_trait_effect = {
	ggsm_remove_rank_traits_effect = yes
	if = {
		limit = { society_rank = 1 }
		add_trait = ggsm_penitent_of_magdalene
	}
	if = {
		limit = { society_rank = 2 }
		add_trait = ggsm_carnal_confessor
		remove_trait = ggsm_penitent_of_magdalene
	}
	if = {
		limit = { society_rank = 3 }
		add_trait = ggsm_sacred_minister
		remove_trait = ggsm_carnal_confessor
	}
	if = {
		limit = { society_rank >= 4 }
		add_trait = ggsm_courtesan_of_jesus
		remove_trait = ggsm_sacred_minister
	}
}

ggsm_progress_sacred_prostitution_effect = {
	set_character_flag = ai_whore
	if = {
		limit = { trait = chaste }
		remove_trait = chaste
	}
	if = {
		limit = { trait = celibate }
		remove_trait = celibate
	}
	if = {
		limit = { trait = experienced_whore }
		remove_trait = experienced_whore
		add_trait = exclusive_whore
		hidden_tooltip = { character_event = { id = cr_lust.3 } }
	}
	if = {
		limit = {
			trait = cheap_whore
			NOT = { trait = experienced_whore }
			NOT = { trait = exclusive_whore }
		}
		remove_trait = cheap_whore
		add_trait = experienced_whore
	}
	if = {
		limit = {
			NOR = {
				trait = cheap_whore
				trait = experienced_whore
				trait = exclusive_whore
			}
		}
		add_trait = cheap_whore
	}
}

ggsm_teach_lust_effect = {
	if = {
		limit = { trait = chaste }
		remove_trait = chaste
	}
	if = {
		limit = { trait = celibate }
		remove_trait = celibate
	}
	if = {
		limit = { NOT = { trait = lustful } }
		add_trait = lustful
		hidden_tooltip = { character_event = { id = cr_lust.3 } }
	}
}

ggsm_cleanse_lovers_pox_effect = {
	if = {
		limit = { trait = lovers_pox }
		remove_trait = lovers_pox
	}
	add_character_modifier = {
		name = ggsm_cleansed_by_magdalene
		months = 24
	}
}

#######################################
# SACRED PROSTITUTION RENOWN
#
# Renown counts patrons served rather
# than House event chains. Solo service
# adds 1 point. Group service adds 3.
#######################################

ggsm_sacred_prostitution_refresh_consort_opinion_effect = {
	# CK2 supports dynasty_opinion and spouse_opinion directly on traits,
	# but has no documented consort_opinion trait modifier. Current consorts
	# therefore receive a two-year opinion modifier refreshed every year.
	any_consort = {
		# any_consort also scopes to the character themself, so exclude PREV.
		limit = { NOT = { character = PREV } }

		remove_opinion = { who = PREV name = ggsm_sacred_prostitution_renown_consort_1 }
		remove_opinion = { who = PREV name = ggsm_sacred_prostitution_renown_consort_2 }
		remove_opinion = { who = PREV name = ggsm_sacred_prostitution_renown_consort_3 }

		if = {
			limit = { PREV = { trait = ggsm_sacred_prostitution_renown_1 } }
			opinion = {
				who = PREV
				modifier = ggsm_sacred_prostitution_renown_consort_1
				years = 2
			}
		}
		if = {
			limit = { PREV = { trait = ggsm_sacred_prostitution_renown_2 } }
			opinion = {
				who = PREV
				modifier = ggsm_sacred_prostitution_renown_consort_2
				years = 2
			}
		}
		if = {
			limit = { PREV = { trait = ggsm_sacred_prostitution_renown_3 } }
			opinion = {
				who = PREV
				modifier = ggsm_sacred_prostitution_renown_consort_3
				years = 2
			}
		}
	}
}

ggsm_sacred_prostitution_check_renown_effect = {
	# Highest threshold first so a character can jump directly to the
	# correct tier if an old save or future source already has enough points.
	if = {
		limit = {
			check_variable = { which = ggsm_sacred_prostitution_renown value = 300 }
			NOT = { trait = ggsm_sacred_prostitution_renown_3 }
		}
		remove_trait = ggsm_sacred_prostitution_renown_0
		remove_trait = ggsm_sacred_prostitution_renown_1
		remove_trait = ggsm_sacred_prostitution_renown_2
		add_trait = ggsm_sacred_prostitution_renown_3
		ggsm_sacred_prostitution_refresh_consort_opinion_effect = yes

		# Jewel of the Magdalene is founded only once per dynasty. The first
		# woman to reach 300 patrons creates the bloodline through ggsmb.12.
		# Later dynasty members still earn the 300-patron renown trait, but do
		# not create a replacement bloodline and therefore cannot overwrite the
		# original founder's place in the dynasty's history.
		if = {
			limit = {
				NOT = { has_dynasty_flag = ggsm_jewel_magdalene_founded }
			}

			# Migration safety for saves where the original Jewel already reached
			# 300 patrons before this dynasty flag existed. This scope excludes ROOT,
			# so a previous living or dead dynasty member at renown tier 3 proves the
			# dynasty already had its founding woman.
			if = {
				limit = {
					any_dynasty_member_even_if_dead = {
						trait = ggsm_sacred_prostitution_renown_3
					}
				}

				set_dynasty_flag = ggsm_jewel_magdalene_founded
			}

			# No earlier Jewel-tier woman exists. ROOT is the dynasty's founder.
			else = {
				set_dynasty_flag = ggsm_jewel_magdalene_founded
				long_character_event = { id = ggsmb.12 }
			}
		}
	}

	if = {
		limit = {
			check_variable = { which = ggsm_sacred_prostitution_renown value = 150 }
			NOT = { trait = ggsm_sacred_prostitution_renown_3 }
			NOT = { trait = ggsm_sacred_prostitution_renown_2 }
		}
		remove_trait = ggsm_sacred_prostitution_renown_0
		remove_trait = ggsm_sacred_prostitution_renown_1
		add_trait = ggsm_sacred_prostitution_renown_2
		ggsm_sacred_prostitution_refresh_consort_opinion_effect = yes
		long_character_event = { id = ggsmb.11 }
	}

	if = {
		limit = {
			check_variable = { which = ggsm_sacred_prostitution_renown value = 50 }
			NOT = { trait = ggsm_sacred_prostitution_renown_3 }
			NOT = { trait = ggsm_sacred_prostitution_renown_2 }
			NOT = { trait = ggsm_sacred_prostitution_renown_1 }
		}
		remove_trait = ggsm_sacred_prostitution_renown_0
		add_trait = ggsm_sacred_prostitution_renown_1
		ggsm_sacred_prostitution_refresh_consort_opinion_effect = yes
		long_character_event = { id = ggsmb.10 }
	}

	# A woman who has taken the Vow but has not yet reached fifty patrons
	# carries the visible starting tier. Undefined renown variables count as 0.
	if = {
		limit = {
			has_character_flag = ggsm_sacred_prostitute
			NOR = {
				trait = ggsm_sacred_prostitution_renown_0
				trait = ggsm_sacred_prostitution_renown_1
				trait = ggsm_sacred_prostitution_renown_2
				trait = ggsm_sacred_prostitution_renown_3
			}
		}
		add_trait = ggsm_sacred_prostitution_renown_0
	}
}

ggsm_sacred_prostitution_add_single_renown_effect = {
	change_variable = { which = ggsm_sacred_prostitution_renown value = 1 }
	ggsm_sacred_prostitution_check_renown_effect = yes
}

ggsm_sacred_prostitution_add_group_renown_effect = {
	change_variable = { which = ggsm_sacred_prostitution_renown value = 3 }
	ggsm_sacred_prostitution_check_renown_effect = yes
}

ggsm_house_set_payment_bracket_effect = {
	set_variable = { which = wealth_temp value = 3 }

	if = {
		limit = { trait = fair }
		change_variable = { which = wealth_temp value = 2 }
	}
	if = {
		limit = { NOT = { practical_age >= 30 } }
		change_variable = { which = wealth_temp value = 2 }
	}
	if = {
		limit = { NOT = { practical_age >= 40 } }
		change_variable = { which = wealth_temp value = 2 }
	}
	if = {
		limit = { trait = lustful }
		change_variable = { which = wealth_temp value = 2 }
	}
	if = {
		limit = {
			check_variable = { which = breast_size value = 4 }
			NOT = { check_variable = { which = breast_size value = 6 } }
		}
		change_variable = { which = wealth_temp value = 2 }
	}
	if = {
		limit = { check_variable = { which = breast_size value = 6 } }
		change_variable = { which = wealth_temp value = 3 }
	}
}

ggsm_house_set_service_payment_effect = {
	# Unified House rate. Inside and outside endings cost the same.
	# This preserves the former standard-rate table.
	set_variable = { which = local_pay value = 0 }

	if = { limit = { check_variable = { which = wealth_temp value = 3 } } set_variable = { which = local_pay value = 1 } }
	if = { limit = { check_variable = { which = wealth_temp value = 5 } } set_variable = { which = local_pay value = 2 } }
	if = { limit = { check_variable = { which = wealth_temp value = 7 } } set_variable = { which = local_pay value = 3 } }
	if = { limit = { check_variable = { which = wealth_temp value = 9 } } set_variable = { which = local_pay value = 4 } }
	if = { limit = { check_variable = { which = wealth_temp value = 11 } } set_variable = { which = local_pay value = 5 } }
	if = { limit = { check_variable = { which = wealth_temp value = 13 } } set_variable = { which = local_pay value = 6 } }
	if = { limit = { check_variable = { which = wealth_temp value = 15 } } set_variable = { which = local_pay value = 7 } }

	if = { limit = { tier = EMPEROR } multiply_variable = { which = local_pay value = 10 } }
	if = { limit = { tier = KING } multiply_variable = { which = local_pay value = 6 } }
	if = { limit = { tier = DUKE } multiply_variable = { which = local_pay value = 4 } }
	if = { limit = { tier = COUNT } multiply_variable = { which = local_pay value = 2 } }
}

# Backward-compatible aliases for any older House calls.
ggsm_house_set_chamber_inside_payment_effect = {
	ggsm_house_set_service_payment_effect = yes
}

ggsm_house_set_standard_payment_effect = {
	ggsm_house_set_service_payment_effect = yes
}

ggsm_house_pay_service_effect = {
	ggsm_house_set_service_payment_effect = yes

	# The selected patron actually pays the sister.
	set_variable = { which = local_charge which = local_pay }
	multiply_variable = { which = local_charge value = -1 }
	event_target:ggsm_house_client = { wealth = local_charge }
	wealth = local_pay

	# One paying patron served.
	ggsm_sacred_prostitution_add_single_renown_effect = yes

	set_variable = { which = local_charge value = 0 }
	set_variable = { which = local_pay value = 0 }
}

ggsm_house_pay_chamber_inside_effect = {
	ggsm_house_pay_service_effect = yes
}

ggsm_house_pay_standard_effect = {
	ggsm_house_pay_service_effect = yes
}

ggsm_house_pay_group_service_effect = {
	ggsm_house_set_service_payment_effect = yes

	# Each patron pays one share of the same House rate.
	set_variable = { which = local_charge which = local_pay }
	multiply_variable = { which = local_charge value = -1 }

	event_target:ggsm_house_client_1 = { wealth = local_charge }
	event_target:ggsm_house_client_2 = { wealth = local_charge }
	event_target:ggsm_house_client_3 = { wealth = local_charge }

	set_variable = { which = local_total which = local_pay }
	multiply_variable = { which = local_total which = ggsm_house_group_count }
	wealth = local_total

	# Three guaranteed paying patrons served.
	ggsm_sacred_prostitution_add_group_renown_effect = yes

	set_variable = { which = local_charge value = 0 }
	set_variable = { which = local_total value = 0 }
	set_variable = { which = local_pay value = 0 }
}

ggsm_house_pay_group_chamber_inside_effect = {
	ggsm_house_pay_group_service_effect = yes
}

ggsm_house_pay_group_standard_effect = {
	ggsm_house_pay_group_service_effect = yes
}

#######################################
# HOUSE CLIENT SELECTION
#######################################

ggsm_house_select_single_client_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client
		}
	}
}

ggsm_house_select_group_client_1_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client_1
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client_1
		}
	}
}

ggsm_house_select_group_client_2_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
			}
			save_event_target_as = ggsm_house_client_2
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
			}
			save_event_target_as = ggsm_house_client_2
		}
	}
}

ggsm_house_select_group_client_3_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
				NOT = { character = event_target:ggsm_house_client_2 }
			}
			save_event_target_as = ggsm_house_client_3
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_male_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
				NOT = { character = event_target:ggsm_house_client_2 }
			}
			save_event_target_as = ggsm_house_client_3
		}
	}
}

#######################################
# FEMALE HOUSE CLIENT SELECTION
#######################################

ggsm_house_select_single_female_client_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client
		}
	}
}

ggsm_house_select_group_female_client_1_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client_1
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
			}
			save_event_target_as = ggsm_house_client_1
		}
	}
}

ggsm_house_select_group_female_client_2_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
			}
			save_event_target_as = ggsm_house_client_2
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
			}
			save_event_target_as = ggsm_house_client_2
		}
	}
}

ggsm_house_select_group_female_client_3_effect = {
	if = {
		limit = {
			OR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_playable_ruler = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
				NOT = { character = event_target:ggsm_house_client_2 }
			}
			save_event_target_as = ggsm_house_client_3
		}
	}
	if = {
		limit = {
			NOR = {
				tier = KING
				tier = EMPEROR
			}
		}
		random_character = {
			limit = {
				ggsm_house_eligible_female_client_trigger = yes
				NOT = { character = event_target:ggsm_house_client_1 }
				NOT = { character = event_target:ggsm_house_client_2 }
			}
			save_event_target_as = ggsm_house_client_3
		}
	}
}

ggsm_house_punish_scoped_client_effect = {
	if = {
		limit = { is_alive = yes }
		imprison = ROOT
		if = {
			limit = { NOT = { trait = excommunicated } }
			add_trait = excommunicated
		}
		if = {
			limit = { higher_tier_than = ROOT }
			if = {
				limit = {
					OR = {
						AND = { tier = COUNT ROOT = { tier = BARON } }
						AND = { tier = DUKE ROOT = { tier = COUNT } }
						AND = { tier = KING ROOT = { tier = DUKE } }
						AND = { tier = EMPEROR ROOT = { tier = KING } }
					}
				}
				add_character_modifier = { name = ggsm_magdalene_scandal_1 duration = 1825 }
			}
			if = {
				limit = {
					OR = {
						AND = { tier = DUKE ROOT = { tier = BARON } }
						AND = { tier = KING ROOT = { tier = COUNT } }
						AND = { tier = EMPEROR ROOT = { tier = DUKE } }
					}
				}
				add_character_modifier = { name = ggsm_magdalene_scandal_2 duration = 1825 }
			}
			if = {
				limit = {
					OR = {
						AND = { tier = KING ROOT = { tier = BARON } }
						AND = { tier = EMPEROR ROOT = { tier = COUNT } }
					}
				}
				add_character_modifier = { name = ggsm_magdalene_scandal_3 duration = 1825 }
			}
			if = {
				limit = { tier = EMPEROR ROOT = { tier = BARON } }
				add_character_modifier = { name = ggsm_magdalene_scandal_4 duration = 1825 }
			}
		}
	}
}

ggsm_house_punish_client_effect = {
	if = {
		limit = {
			event_target:ggsm_house_client = { is_alive = yes }
		}
		event_target:ggsm_house_client = { ggsm_house_punish_scoped_client_effect = yes }
	}
}

ggsm_house_punish_group_clients_effect = {
	event_target:ggsm_house_client_1 = { ggsm_house_punish_scoped_client_effect = yes }
	event_target:ggsm_house_client_2 = { ggsm_house_punish_scoped_client_effect = yes }
	event_target:ggsm_house_client_3 = { ggsm_house_punish_scoped_client_effect = yes }
}

ggsm_house_roll_single_inside_effect = {
	random_list = {
		80 = {
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = lustful } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = just } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = kind } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = humble } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = temperate } }
			modifier = { factor = 0.60 event_target:ggsm_house_client = { trait = chaste } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = celibate } }

			event_target:ggsm_house_client = { ggsm_teach_lust_effect = yes }
			long_character_event = { id = ggsmhm.20 }
		}
		15 = {
			modifier = { factor = 2.00 event_target:ggsm_house_client = { trait = chaste } }
			modifier = { factor = 1.75 event_target:ggsm_house_client = { trait = celibate } }
			modifier = { factor = 2.00 event_target:ggsm_house_client = { trait = arbitrary } }
			modifier = { factor = 1.75 event_target:ggsm_house_client = { trait = wroth } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = proud } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = cruel } }
			modifier = { factor = 0.60 event_target:ggsm_house_client = { trait = lustful } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = just } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = kind } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = humble } }

			ggsm_house_punish_client_effect = yes
			long_character_event = { id = ggsmhm.24 }
		}
		5 = {
			modifier = { factor = 2.00 event_target:ggsm_house_client = { trait = shy } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = temperate } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = chaste } }

			long_character_event = { id = ggsmhm.21 }
		}
	}
}

ggsm_house_roll_single_outside_effect = {
	random_list = {
		80 = {
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = lustful } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = just } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = kind } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = humble } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = temperate } }
			modifier = { factor = 0.60 event_target:ggsm_house_client = { trait = chaste } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = celibate } }

			event_target:ggsm_house_client = { ggsm_teach_lust_effect = yes }
			long_character_event = { id = ggsmhm.22 }
		}
		15 = {
			modifier = { factor = 2.00 event_target:ggsm_house_client = { trait = chaste } }
			modifier = { factor = 1.75 event_target:ggsm_house_client = { trait = celibate } }
			modifier = { factor = 2.00 event_target:ggsm_house_client = { trait = arbitrary } }
			modifier = { factor = 1.75 event_target:ggsm_house_client = { trait = wroth } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = proud } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = cruel } }
			modifier = { factor = 0.60 event_target:ggsm_house_client = { trait = lustful } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = just } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = kind } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = humble } }

			ggsm_house_punish_client_effect = yes
			long_character_event = { id = ggsmhm.25 }
		}
		5 = {
			modifier = { factor = 2.00 event_target:ggsm_house_client = { trait = shy } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = temperate } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = chaste } }

			long_character_event = { id = ggsmhm.23 }
		}
	}
}

ggsm_house_teach_group_lust_effect = {
	event_target:ggsm_house_client_1 = { ggsm_teach_lust_effect = yes }
	event_target:ggsm_house_client_2 = { ggsm_teach_lust_effect = yes }
	event_target:ggsm_house_client_3 = { ggsm_teach_lust_effect = yes }
}

ggsm_house_roll_group_inside_effect = {
	random_list = {
		80 = {
			modifier = { factor = 1.25 event_target:ggsm_house_client_1 = { trait = lustful } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_2 = { trait = lustful } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_3 = { trait = lustful } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_1 = { trait = just } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_2 = { trait = just } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_3 = { trait = just } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_1 = { trait = kind } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_2 = { trait = kind } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_3 = { trait = kind } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_1 = { trait = chaste } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_2 = { trait = chaste } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_3 = { trait = chaste } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_1 = { trait = celibate } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_2 = { trait = celibate } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_3 = { trait = celibate } }

			ggsm_house_teach_group_lust_effect = yes
			long_character_event = { id = ggsmhm.110 }
		}
		20 = {
			modifier = { factor = 1.60 event_target:ggsm_house_client_1 = { trait = chaste } }
			modifier = { factor = 1.60 event_target:ggsm_house_client_2 = { trait = chaste } }
			modifier = { factor = 1.60 event_target:ggsm_house_client_3 = { trait = chaste } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_1 = { trait = celibate } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_2 = { trait = celibate } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_3 = { trait = celibate } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_1 = { trait = arbitrary } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_2 = { trait = arbitrary } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_3 = { trait = arbitrary } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_1 = { trait = wroth } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_2 = { trait = wroth } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_3 = { trait = wroth } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_1 = { trait = proud } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_2 = { trait = proud } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_3 = { trait = proud } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_1 = { trait = lustful } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_2 = { trait = lustful } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_3 = { trait = lustful } }

			ggsm_house_punish_group_clients_effect = yes
			long_character_event = { id = ggsmhm.112 }
		}
	}
}

ggsm_house_roll_group_outside_effect = {
	random_list = {
		80 = {
			modifier = { factor = 1.25 event_target:ggsm_house_client_1 = { trait = lustful } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_2 = { trait = lustful } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_3 = { trait = lustful } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_1 = { trait = just } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_2 = { trait = just } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_3 = { trait = just } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_1 = { trait = kind } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_2 = { trait = kind } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_3 = { trait = kind } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_1 = { trait = chaste } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_2 = { trait = chaste } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_3 = { trait = chaste } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_1 = { trait = celibate } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_2 = { trait = celibate } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_3 = { trait = celibate } }

			ggsm_house_teach_group_lust_effect = yes
			long_character_event = { id = ggsmhm.116 }
		}
		20 = {
			modifier = { factor = 1.60 event_target:ggsm_house_client_1 = { trait = chaste } }
			modifier = { factor = 1.60 event_target:ggsm_house_client_2 = { trait = chaste } }
			modifier = { factor = 1.60 event_target:ggsm_house_client_3 = { trait = chaste } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_1 = { trait = celibate } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_2 = { trait = celibate } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_3 = { trait = celibate } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_1 = { trait = arbitrary } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_2 = { trait = arbitrary } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_3 = { trait = arbitrary } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_1 = { trait = wroth } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_2 = { trait = wroth } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_3 = { trait = wroth } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_1 = { trait = proud } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_2 = { trait = proud } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_3 = { trait = proud } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_1 = { trait = lustful } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_2 = { trait = lustful } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_3 = { trait = lustful } }

			ggsm_house_punish_group_clients_effect = yes
			long_character_event = { id = ggsmhm.113 }
		}
	}
}

#######################################
# FEMALE HOUSE SERVICE RESULTS
#
# Female patrons have no inside/outside ending.
# The serving sister either permits a finish or
# denies it. Denial can still be disobeyed.
#######################################

ggsm_house_roll_single_female_finish_effect = {
	random_list = {
		80 = {
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = lustful } }
			modifier = { factor = 0.60 event_target:ggsm_house_client = { trait = chaste } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = celibate } }
			modifier = { factor = 0.75 event_target:ggsm_house_client = { trait = shy } }
			modifier = { factor = 0.80 event_target:ggsm_house_client = { trait = temperate } }

			event_target:ggsm_house_client = { ggsm_teach_lust_effect = yes }
			long_character_event = { id = ggsmhm.210 }
		}
		20 = {
			modifier = { factor = 1.75 event_target:ggsm_house_client = { trait = chaste } }
			modifier = { factor = 1.75 event_target:ggsm_house_client = { trait = celibate } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = shy } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = temperate } }
			modifier = { factor = 0.60 event_target:ggsm_house_client = { trait = lustful } }

			long_character_event = { id = ggsmhm.211 }
		}
	}
}

ggsm_house_roll_single_female_deny_effect = {
	random_list = {
		85 = {
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = just } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = kind } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = humble } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = temperate } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = chaste } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = celibate } }
			modifier = { factor = 0.75 event_target:ggsm_house_client = { trait = arbitrary } }
			modifier = { factor = 0.75 event_target:ggsm_house_client = { trait = wroth } }
			modifier = { factor = 0.75 event_target:ggsm_house_client = { trait = proud } }
			modifier = { factor = 0.75 event_target:ggsm_house_client = { trait = cruel } }

			long_character_event = { id = ggsmhm.212 }
		}
		15 = {
			modifier = { factor = 2.00 event_target:ggsm_house_client = { trait = arbitrary } }
			modifier = { factor = 1.75 event_target:ggsm_house_client = { trait = wroth } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = proud } }
			modifier = { factor = 1.50 event_target:ggsm_house_client = { trait = cruel } }
			modifier = { factor = 1.25 event_target:ggsm_house_client = { trait = lustful } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = just } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = kind } }
			modifier = { factor = 0.50 event_target:ggsm_house_client = { trait = humble } }

			ggsm_house_punish_client_effect = yes
			long_character_event = { id = ggsmhm.213 }
		}
	}
}

ggsm_house_roll_group_female_finish_effect = {
	random_list = {
		80 = {
			modifier = { factor = 1.25 event_target:ggsm_house_client_1 = { trait = lustful } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_2 = { trait = lustful } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_3 = { trait = lustful } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_1 = { trait = chaste } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_2 = { trait = chaste } }
			modifier = { factor = 0.75 event_target:ggsm_house_client_3 = { trait = chaste } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_1 = { trait = celibate } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_2 = { trait = celibate } }
			modifier = { factor = 0.70 event_target:ggsm_house_client_3 = { trait = celibate } }

			ggsm_house_teach_group_lust_effect = yes
			long_character_event = { id = ggsmhm.230 }
		}
		20 = {
			modifier = { factor = 1.50 event_target:ggsm_house_client_1 = { trait = chaste } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_2 = { trait = chaste } }
			modifier = { factor = 1.50 event_target:ggsm_house_client_3 = { trait = chaste } }
			modifier = { factor = 1.40 event_target:ggsm_house_client_1 = { trait = celibate } }
			modifier = { factor = 1.40 event_target:ggsm_house_client_2 = { trait = celibate } }
			modifier = { factor = 1.40 event_target:ggsm_house_client_3 = { trait = celibate } }

			long_character_event = { id = ggsmhm.231 }
		}
	}
}

ggsm_house_roll_group_female_deny_effect = {
	random_list = {
		80 = {
			modifier = { factor = 1.20 event_target:ggsm_house_client_1 = { trait = just } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_2 = { trait = just } }
			modifier = { factor = 1.20 event_target:ggsm_house_client_3 = { trait = just } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_1 = { trait = kind } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_2 = { trait = kind } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_3 = { trait = kind } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_1 = { trait = humble } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_2 = { trait = humble } }
			modifier = { factor = 1.15 event_target:ggsm_house_client_3 = { trait = humble } }

			long_character_event = { id = ggsmhm.232 }
		}
		20 = {
			modifier = { factor = 1.35 event_target:ggsm_house_client_1 = { trait = arbitrary } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_2 = { trait = arbitrary } }
			modifier = { factor = 1.35 event_target:ggsm_house_client_3 = { trait = arbitrary } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_1 = { trait = wroth } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_2 = { trait = wroth } }
			modifier = { factor = 1.30 event_target:ggsm_house_client_3 = { trait = wroth } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_1 = { trait = proud } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_2 = { trait = proud } }
			modifier = { factor = 1.25 event_target:ggsm_house_client_3 = { trait = proud } }

			ggsm_house_punish_group_clients_effect = yes
			long_character_event = { id = ggsmhm.233 }
		}
	}
}

ggsm_house_end_shift_effect = {
	clr_character_flag = ggsm_house_shift
	clr_character_flag = ggsm_house_busy
	clr_character_flag = ggsm_whored

	set_variable = { which = wealth_temp value = 0 }
	set_variable = { which = local_pay value = 0 }
	set_variable = { which = ggsm_house_group_count value = 0 }

	clear_event_target = ggsm_house_client
	clear_event_target = ggsm_house_client_1
	clear_event_target = ggsm_house_client_2
	clear_event_target = ggsm_house_client_3
	clear_event_target = ggsm_whore
	clear_event_target = ggsm_house_visitor
}

#######################################
# MAGDALENE LIBRARY TRANSFER
#
# ROOT = retiring Magdalene ruler
# event_target:ggsm_retirement_heir = successor
#
# Each institutional book is selected explicitly by artifact type.
# This avoids changing artifact ownership while iterating any_artifact.
# The retirement event calls this effect before abdication.
#######################################

ggsm_transfer_magdalene_library_to_heir_effect = {
	random_artifact = {
		artifact_type = ggsm_book_meditations_magdalene
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_reflections_sacred_mercy
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_theology_open_mercy
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_great_theology_magdalene
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_lessons_carnal_charity
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_treatise_carnal_charity
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_art_sacred_desire
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_great_art_carnal_charity
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_notes_house_mercy
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_guide_houses_mercy
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_administration_sacred_charity
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_great_rule_houses_mercy
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_observations_sacred_rites
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_hidden_rites
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_mysteries_magdalene
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_book_red_book_magdalene
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}

	random_artifact = {
		artifact_type = ggsm_rule_open_mercy
		transfer_artifact = {
			from = ROOT
			to = event_target:ggsm_retirement_heir
		}
	}
}
